#include "cbaralho.h"

CBaralho::CBaralho(QObject *parent) :
    QDeclarativeImageProvider(QDeclarativeImageProvider::Image)
{
    _baralho.load(":/baralho");
}

QImage CBaralho::requestImage(const QString &id, QSize *size, const QSize &requestedSize)
{
    QStringList carta = id.split("/");
    const int w = 96, h = 144;
    int x = 0, y = 0;
    if (carta.length() == 2) {
        if (carta[0] == "A") {
            y = 48;
            if (carta[1] == "copas")
                x = 480;
            else if (carta[1] == "paus")
                x = 480 + w + 10;
            else if (carta[1] == "ouros")
                x = 480 + 2*w + 10;
            else if (carta[1] == "espadas")
                x = 480 + 3*w + 10;
        } else if (carta[0] == "K") {
            y = 48;
            if (carta[1] == "paus")
                x = 65;
            else if (carta[1] == "copas")
                x = 65 + w + 10;
            else if (carta[1] == "ouros")
                x = 65 + 2*w + 10;
            else if (carta[1] == "espadas")
                x = 65 + 3*w + 10;
        } else if (carta[0] == "8") {
            y = 48;
            if (carta[1] == "espadas")
                x = 894;
            else if (carta[1] == "paus")
                x = 894 + w + 10;
            else if (carta[1] == "copas")
                x = 894 + 2*w + 10;
            else if (carta[1] == "ouros")
                x = 894 + 3*w + 10;
        } else if (carta[0] == "Q") {
            y = 198;
            if (carta[1] == "paus")
                x = 65;
            else if (carta[1] == "ouros")
                x = 65 + w + 10;
            else if (carta[1] == "copas")
                x = 65 + 2*w + 10;
            else if (carta[1] == "espadas")
                x = 65 + 3*w + 10;
        } else if (carta[0] == "10") {
            y = 198;
            if (carta[1] == "ouros")
                x = 479;
            else if (carta[1] == "espadas")
                x = 479 + w + 10;
            else if (carta[1] == "copas")
                x = 479 + 2*w + 10;
            else if (carta[1] == "paus")
                x = 479 + 3*w + 10;
        } else if (carta[0] == "7") {
            y = 198;
            if (carta[1] == "ouros")
                x = 894;
            else if (carta[1] == "copas")
                x = 894 + w + 10;
            else if (carta[1] == "paus")
                x = 894 + 2*w + 10;
            else if (carta[1] == "espadas")
                x = 894 + 3*w + 10;
        } else if (carta[0] == "J") {
            y = 346;
            if (carta[1] == "paus")
                x = 65;
            else if (carta[1] == "ouros")
                x = 65 + w + 10;
            else if (carta[1] == "copas")
                x = 65 + 2*w + 10;
            else if (carta[1] == "espadas")
                x = 65 + 3*w + 10;
        } else if (carta[0] == "9") {
            y = 346;
            if (carta[1] == "ouros")
                x = 479;
            else if (carta[1] == "copas")
                x = 479 + w + 10;
            else if (carta[1] == "paus")
                x = 479 + 2*w + 10;
            else if (carta[1] == "espadas")
                x = 479 + 3*w + 10;
        } else if (carta[0] == "6") {
            y = 346;
            if (carta[1] == "espadas")
                x = 894;
            else if (carta[1] == "paus")
                x = 894 + w + 10;
            else if (carta[1] == "copas")
                x = 894 + 2*w + 10;
            else if (carta[1] == "ouros")
                x = 894 + 3*w + 10;
        } else if (carta[0] == "5") {
            y = 506;
            if (carta[1] == "ouros")
                x = 158;
            else if (carta[1] == "copas")
                x = 158 + w + 10;
            else if (carta[1] == "paus")
                x = 158 + 2*w + 10;
            else if (carta[1] == "espadas")
                x = 158 + 3*w + 10;
        } else if (carta[0] == "3") {
            y = 506;
            if (carta[1] == "ouros")
                x = 802;
            else if (carta[1] == "espadas")
                x = 802 + w + 10;
            else if (carta[1] == "paus")
                x = 802 + 2*w + 10;
            else if (carta[1] == "copas")
                x = 802 + 3*w + 10;
        } else if (carta[0] == "4") {
            y = 655;
            if (carta[1] == "espadas")
                x = 158;
            else if (carta[1] == "paus")
                x = 158 + w + 10;
            else if (carta[1] == "copas")
                x = 158 + 2*w + 10;
            else if (carta[1] == "ouros")
                x = 158 + 3*w + 10;
        } else if (carta[0] == "2") {
            y = 655;
            if (carta[1] == "espadas")
                x = 802;
            else if (carta[1] == "paus")
                x = 802 + w + 10;
            else if (carta[1] == "ouros")
                x = 802 + 2*w + 10;
            else if (carta[1] == "copas")
                x = 802 + 3*w + 10;
        }
        size->setWidth(w);
        size->setHeight(h);
        return _baralho.copy(x, y, w, h);
    }
    return QImage();
}
